home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 November: Tool Chest / Dev.CD Nov 94.toast / Tool Chest / !Interfaces / Universal Interfaces 2.0a1 / CIncludes / Gestalt.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-07-25  |  24.5 KB  |  767 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        Gestalt.h
  3.  
  4.      Copyright:    © 1984-1994 by Apple Computer, Inc.
  5.                  All rights reserved.
  6.  
  7.      Version:    Universal Interfaces 2.0a1.2  ETO #15, MPW prerelease.  Sunday, July 17, 1994. 
  8.  
  9.      Bugs?:        If you find a problem with this file, send the file and version
  10.                  information (from above) and the problem description to:
  11.  
  12.                      Internet:    apple.bugs@applelink.apple.com
  13.                      AppleLink:    APPLE.BUGS
  14.  
  15. */
  16.  
  17. #ifndef __GESTALT__
  18. #define __GESTALT__
  19.  
  20.  
  21. #ifndef __TYPES__
  22. #include <Types.h>
  23. #endif
  24. /*    #include <ConditionalMacros.h>                                */
  25.  
  26. #ifndef __MIXEDMODE__
  27. #include <MixedMode.h>
  28. #endif
  29.  
  30. #ifdef __cplusplus
  31. extern "C" {
  32. #endif
  33.  
  34. #if GENERATINGPOWERPC
  35. #pragma options align=mac68k
  36. #endif
  37.  
  38. #ifdef __CFM68K__
  39. #pragma lib_export on
  40. #endif
  41.  
  42.  
  43. enum {
  44.     gestaltAddressingModeAttr    = 'addr',                        /* addressing mode attributes */
  45.     gestalt32BitAddressing        = 0,                            /* using 32-bit addressing mode */
  46.     gestalt32BitSysZone            = 1,                            /* 32-bit compatible system zone */
  47.     gestalt32BitCapable            = 2                                /* Machine is 32-bit capable */
  48. };
  49.  
  50. enum {
  51.     gestaltAliasMgrAttr            = 'alis',                        /* Alias Mgr Attributes */
  52.     gestaltAliasMgrPresent        = 0,                            /* True if the Alias Mgr is present */
  53.     gestaltAliasMgrSupportsRemoteAppletalk = 1                    /* True if the Alias Mgr knows about Remote Appletalk */
  54. };
  55.  
  56. enum {
  57.     gestaltAppleTalkVersion        = 'atlk'
  58. };
  59.  
  60. enum {
  61.     gestaltAUXVersion            = 'a/ux'
  62. };
  63.  
  64. enum {
  65.     gestaltCloseViewAttr        = 'BSDa',                        /* CloseView attributes */
  66.     gestaltCloseViewEnabled        = 0,                            /* Closeview enabled (dynamic bit - returns current state) */
  67.     gestaltCloseViewDisplayMgrFriendly = 1                        /* Closeview compatible with Display Manager (FUTURE) */
  68. };
  69.  
  70. enum {
  71.     gestaltCFMAttr                = 'cfrg',                        /* returns information about the Code Fragment Manager */
  72.     gestaltCFMPresent            = 0                                /* true if the Code Fragment Manager is present */
  73. };
  74.  
  75. enum {
  76.     gestaltConnMgrAttr            = 'conn',                        /* connection mgr attributes    */
  77.     gestaltConnMgrPresent        = 0,
  78.     gestaltConnMgrCMSearchFix    = 1,                            /* Fix to CMAddSearch?     */
  79.     gestaltConnMgrErrorString    = 2,                            /* has CMGetErrorString() */
  80.     gestaltConnMgrMultiAsyncIO    = 3                                /* CMNewIOPB, CMDisposeIOPB, CMPBRead, CMPBWrite, CMPBIOKill */
  81. };
  82.  
  83. enum {
  84.     gestaltComponentMgr            = 'cpnt'
  85. };
  86.  
  87. enum {
  88.     gestaltNativeCPUtype        = 'cput',                        /* Native CPU type                                       */
  89.     gestaltCPU68000                = 1,                            /* Various 68k CPUs...     */
  90.     gestaltCPU68010                = 2,
  91.     gestaltCPU68020                = 3,
  92.     gestaltCPU68030                = 4,
  93.     gestaltCPU68040                = 5,
  94.     gestaltCPU601                = 0x101,                        /* IBM 601                                                 */
  95.     gestaltCPU603                = 0x103,
  96.     gestaltCPU604                = 0x104
  97. };
  98.  
  99. enum {
  100.     gestaltCRMAttr                = 'crm ',                        /* comm resource mgr attributes */
  101.     gestaltCRMPresent            = 0,
  102.     gestaltCRMPersistentFix        = 1,                            /* fix for persistent tools */
  103.     gestaltCRMToolRsrcCalls        = 2                                /* has CRMGetToolResource/ReleaseToolResource */
  104. };
  105.  
  106. enum {
  107.     gestaltControlStripVersion    = 'csvr'
  108. };
  109.  
  110. enum {
  111.     gestaltCTBVersion            = 'ctbv'
  112. };
  113.  
  114. enum {
  115.     gestaltDBAccessMgrAttr        = 'dbac',                        /* Database Access Mgr attributes */
  116.     gestaltDBAccessMgrPresent    = 0                                /* True if Database Access Mgr present */
  117. };
  118.  
  119. enum {
  120.     gestaltDictionaryMgrAttr    = 'dict',                        /* Dictionary Manager attributes */
  121.     gestaltDictionaryMgrPresent    = 0                                /* Dictionary Manager attributes */
  122. };
  123.  
  124. enum {
  125.     gestaltDITLExtAttr            = 'ditl',                        /* AppenDITL, etc. calls from CTB */
  126.     gestaltDITLExtPresent        = 0                                /* True if calls are present */
  127. };
  128.  
  129. enum {
  130.     gestaltDisplayMgrAttr        = 'dply',                        /* Display Manager attributes */
  131.     gestaltDisplayMgrPresent    = 0                                /* True if Display Mgr is present */
  132. };
  133.  
  134. enum {
  135.     gestaltDisplayMgrVers        = 'dplv'
  136. };
  137.  
  138. enum {
  139.     gestaltDragMgrAttr            = 'drag',                        /* Drag Manager attributes */
  140.     gestaltDragMgrPresent        = 0,                            /* Drag Manager is present */
  141.     gestaltDragMgrFloatingWind    = 1,                            /* Drag Manager supports floating windows */
  142.     gestaltPPCDragLibPresent    = 2                                /* Drag Manager PPC DragLib is present */
  143. };
  144.  
  145. enum {
  146.     gestaltEasyAccessAttr        = 'easy',                        /* Easy Access attributes */
  147.     gestaltEasyAccessOff        = 0,                            /* if Easy Access present, but off (no icon) */
  148.     gestaltEasyAccessOn            = 1,                            /* if Easy Access "On" */
  149.     gestaltEasyAccessSticky        = 2,                            /* if Easy Access "Sticky" */
  150.     gestaltEasyAccessLocked        = 3                                /* if Easy Access "Locked" */
  151. };
  152.  
  153. enum {
  154.     gestaltEditionMgrAttr        = 'edtn',                        /* Edition Mgr attributes */
  155.     gestaltEditionMgrPresent    = 0,                            /* True if Edition Mgr present */
  156.     gestaltEditionMgrTranslationAware = 1                        /* True if edition manager is translation manager aware */
  157. };
  158.  
  159. enum {
  160.     gestaltAppleEventsAttr        = 'evnt',                        /* Apple Events attributes */
  161.     gestaltAppleEventsPresent    = 0,                            /* True if Apple Events present */
  162.     gestaltScriptingSupport        = 1,
  163.     gestaltOSLInSystem            = 2                                /* OSL is in system so don’t use the one linked in to app */
  164. };
  165.  
  166. enum {
  167.     gestaltFinderAttr            = 'fndr',                        /* Finder attributes */
  168.     gestaltFinderDropEvent        = 0,                            /* Finder recognizes drop event */
  169.     gestaltFinderMagicPlacement    = 1,                            /* Finder supports magic icon placement */
  170.     gestaltFinderCallsAEProcess    = 2,                            /* Finder calls AEProcessAppleEvent */
  171.     gestaltOSLCompliantFinder    = 3,                            /* Finder is scriptable and recordable */
  172.     gestaltFinderSupports4GBVolumes = 4,                        /* Finder correctly handles 4GB volumes */
  173.     gestaltFinderHandlesCFMFailures = 5,                        /* Finder handles Code Fragment Manager errors  */
  174.     gestaltFinderHasClippings    = 6                                /* Finder supports Drag Manager clipping files */
  175. };
  176.  
  177. enum {
  178.     gestaltFindFolderAttr        = 'fold',                        /* Folder Mgr attributes */
  179.     gestaltFindFolderPresent    = 0                                /* True if Folder Mgr present */
  180. };
  181.  
  182. enum {
  183.     gestaltFontMgrAttr            = 'font',                        /* Font Mgr attributes */
  184.     gestaltOutlineFonts            = 0                                /* True if Outline Fonts supported */
  185. };
  186.  
  187. enum {
  188.     gestaltFPUType                = 'fpu ',                        /* fpu type */
  189.     gestaltNoFPU                = 0,                            /* no FPU */
  190.     gestalt68881                = 1,                            /* 68881 FPU */
  191.     gestalt68882                = 2,                            /* 68882 FPU */
  192.     gestalt68040FPU                = 3                                /* 68040 built-in FPU */
  193. };
  194.  
  195. enum {
  196.     gestaltFSAttr                = 'fs  ',                        /* file system attributes */
  197.     gestaltFullExtFSDispatching    = 0,                            /* has really cool new HFSDispatch dispatcher */
  198.     gestaltHasFSSpecCalls        = 1,                            /* has FSSpec calls */
  199.     gestaltHasFileSystemManager    = 2,                            /* has a file system manager */
  200.     gestaltFSMDoesDynamicLoad    = 3,                            /* file system manager supports dynamic loading */
  201.     gestaltFSSupports4GBVols    = 4,                            /* file system supports 4 gigabyte volumes */
  202.     gestaltFSSupports2TBVols    = 5,                            /* file system supports 2 terabyte volumes */
  203.     gestaltHasExtendedDiskInit    = 6                                /* has extended Disk Initialization calls */
  204. };
  205.  
  206. enum {
  207.     gestaltFXfrMgrAttr            = 'fxfr',                        /* file transfer manager attributes */
  208.     gestaltFXfrMgrPresent        = 0,
  209.     gestaltFXfrMgrMultiFile        = 1,                            /* supports FTSend and FTReceive */
  210.     gestaltFXfrMgrErrorString    = 2                                /* supports FTGetErrorString */
  211. };
  212.  
  213. enum {
  214.     gestaltHardwareAttr            = 'hdwr',                        /* hardware attributes */
  215.     gestaltHasVIA1                = 0,                            /* VIA1 exists */
  216.     gestaltHasVIA2                = 1,                            /* VIA2 exists */
  217.     gestaltHasASC                = 3,                            /* Apple Sound Chip exists */
  218.     gestaltHasSCC                = 4,                            /* SCC exists */
  219.     gestaltHasSCSI                = 7,                            /* SCSI exists */
  220.     gestaltHasSoftPowerOff        = 19,                            /* Capable of software power off */
  221.     gestaltHasSCSI961            = 21,                            /* 53C96 SCSI controller on internal bus */
  222.     gestaltHasSCSI962            = 22,                            /* 53C96 SCSI controller on external bus */
  223.     gestaltHasUniversalROM        = 24                            /* Do we have a Universal ROM? */
  224. };
  225.  
  226. enum {
  227.     gestaltHelpMgrAttr            = 'help',                        /* Help Mgr Attributes */
  228.     gestaltHelpMgrPresent        = 0,                            /* true if help mgr is present */
  229.     gestaltHelpMgrExtensions    = 1                                /* true if help mgr extensions are installed */
  230. };
  231.  
  232. enum {
  233.     gestaltCompressionMgr        = 'icmp'
  234. };
  235.  
  236. enum {
  237.     gestaltIconUtilitiesAttr    = 'icon',                        /* Icon Utilities attributes  (Note: available in System 7.0, despite gestalt) */
  238.     gestaltIconUtilitiesPresent    = 0                                /* true if icon utilities are present */
  239. };
  240.  
  241. enum {
  242.     gestaltKeyboardType            = 'kbd ',                        /* keyboard type */
  243.     gestaltMacKbd                = 1,
  244.     gestaltMacAndPad            = 2,
  245.     gestaltMacPlusKbd            = 3,
  246.     gestaltExtADBKbd            = 4,
  247.     gestaltStdADBKbd            = 5,
  248.     gestaltPrtblADBKbd            = 6,
  249.     gestaltPrtblISOKbd            = 7,
  250.     gestaltStdISOADBKbd            = 8,
  251.     gestaltExtISOADBKbd            = 9,
  252.     gestaltADBKbdII                = 10,
  253.     gestaltADBISOKbdII            = 11,
  254.     gestaltPwrBookADBKbd        = 12,
  255.     gestaltPwrBookISOADBKbd        = 13,
  256.     gestaltAppleAdjustKeypad    = 14,
  257.     gestaltAppleAdjustADBKbd    = 15,
  258.     gestaltAppleAdjustISOKbd    = 16,
  259.     gestaltJapanAdjustADBKbd    = 17,                            /* Japan Adjustable Keyboard */
  260.     gestaltPwrBkExtISOKbd        = 20,                            /* PowerBook Extended International Keyboard with function keys */
  261.     gestaltPwrBkExtJISKbd        = 21,                            /* PowerBook Extended Japanese Keyboard with function keys         */
  262.     gestaltPwrBkExtADBKbd        = 24                            /* PowerBook Extended Domestic Keyboard with function keys         */
  263. };
  264.  
  265. enum {
  266.     gestaltLowMemorySize        = 'lmem'
  267. };
  268.  
  269. enum {
  270.     gestaltLogicalRAMSize        = 'lram'
  271. };
  272.  
  273. enum {
  274.     gestaltMachineType            = 'mach',                        /* machine type */
  275.     gestaltClassic                = 1,
  276.     gestaltMacXL                = 2,
  277.     gestaltMac512KE                = 3,
  278.     gestaltMacPlus                = 4,
  279.     gestaltMacSE                = 5,
  280.     gestaltMacII                = 6,
  281.     gestaltMacIIx                = 7,
  282.     gestaltMacIIcx                = 8,
  283.     gestaltMacSE030                = 9,
  284.     gestaltPortable                = 10,
  285.     gestaltMacIIci                = 11,
  286.     gestaltMacIIfx                = 13,
  287.     gestaltMacClassic            = 17,
  288.     gestaltMacIIsi                = 18,
  289.     gestaltMacLC                = 19,
  290.     gestaltQuadra900            = 20,
  291.     gestaltPowerBook170            = 21,
  292.     gestaltQuadra700            = 22,
  293.     gestaltClassicII            = 23,
  294.     gestaltPowerBook100            = 24,
  295.     gestaltPowerBook140            = 25,
  296.     gestaltQuadra950            = 26,
  297.     gestaltMacLCIII                = 27,
  298.     gestaltPerforma450            = 27,
  299.     gestaltPowerBookDuo210        = 29,
  300.     gestaltMacCentris650        = 30,
  301.     gestaltPowerBookDuo230        = 32,
  302.     gestaltPowerBook180            = 33,
  303.     gestaltPowerBook160            = 34,
  304.     gestaltMacQuadra800            = 35,
  305.     gestaltMacQuadra650            = 36,
  306.     gestaltMacLCII                = 37,
  307.     gestaltPowerBookDuo250        = 38,
  308.     gestaltAWS9150_80            = 39,
  309.     gestaltMacIIvi                = 44,
  310.     gestaltPerforma600            = 45,
  311.     gestaltMacIIvm                = 45,
  312.     gestaltMacIIvx                = 48,
  313.     gestaltMacColorClassic        = 49,
  314.     gestaltPerforma250            = 49,
  315.     gestaltPowerBook165c        = 50,
  316.     gestaltMacCentris610        = 52,
  317.     gestaltMacQuadra610            = 53,
  318.     gestaltPowerBook145            = 54,
  319.     gestaltMacLC520                = 56,
  320.     gestaltMacCentris660AV        = 60,
  321.     gestaltPerforma46x            = 62,
  322.     gestaltPowerMac8100_80        = 65,                            /* Power Macintosh 8100/80 */
  323.     gestaltPowerBook180c        = 71,
  324.     gestaltPowerMac6100_60        = 75,                            /* Power Macintosh 6100/60 */
  325.     gestaltPowerBookDuo270c        = 77,
  326.     gestaltMacQuadra840AV        = 78,
  327.     gestaltPerforma550            = 80,
  328.     gestaltPowerBook165            = 84,
  329.     gestaltMacTV                = 88,
  330.     gestaltMacLC475                = 89,
  331.     gestaltPerforma47x            = 89,
  332.     gestaltMacLC575                = 92,
  333.     gestaltMacQuadra605            = 94,
  334.     gestaltPowerMac7100_66        = 112                            /* Power Macintosh 7100/66 */
  335. };
  336.  
  337. enum {
  338.     kMachineNameStrID            = -16395
  339. };
  340.  
  341. enum {
  342.     gestaltMachineIcon            = 'micn'
  343. };
  344.  
  345. enum {
  346.     gestaltMiscAttr                = 'misc',                        /* miscellaneous attributes */
  347.     gestaltScrollingThrottle    = 0,                            /* true if scrolling throttle on */
  348.     gestaltSquareMenuBar        = 2                                /* true if menu bar is square */
  349. };
  350.  
  351. enum {
  352.     gestaltMixedModeVersion        = 'mixd'
  353. };
  354.  
  355. enum {
  356.     gestaltMMUType                = 'mmu ',                        /* mmu type */
  357.     gestaltNoMMU                = 0,                            /* no MMU */
  358.     gestaltAMU                    = 1,                            /* address management unit */
  359.     gestalt68851                = 2,                            /* 68851 PMMU */
  360.     gestalt68030MMU                = 3,                            /* 68030 built-in MMU */
  361.     gestalt68040MMU                = 4,                            /* 68040 built-in MMU */
  362.     gestaltEMMU1                = 5                                /* Emulated MMU type 1  */
  363. };
  364.  
  365. enum {
  366.     gestaltStdNBPAttr            = 'nlup',                        /* standard nbp attributes */
  367.     gestaltStdNBPPresent        = 0
  368. };
  369.  
  370. enum {
  371.     gestaltNotificationMgrAttr    = 'nmgr',                        /* notification manager attributes */
  372.     gestaltNotificationPresent    = 0                                /* notification manager exists */
  373. };
  374.  
  375. enum {
  376.     gestaltNuBusSlotCount        = 'nubs'
  377. };
  378.  
  379. enum {
  380.     gestaltOSAttr                = 'os  ',                        /* o/s attributes */
  381.     gestaltSysZoneGrowable        = 0,                            /* system heap is growable */
  382.     gestaltLaunchCanReturn        = 1,                            /* can return from launch */
  383.     gestaltLaunchFullFileSpec    = 2,                            /* can launch from full file spec */
  384.     gestaltLaunchControl        = 3,                            /* launch control support available */
  385.     gestaltTempMemSupport        = 4,                            /* temp memory support */
  386.     gestaltRealTempMemory        = 5,                            /* temp memory handles are real */
  387.     gestaltTempMemTracked        = 6,                            /* temporary memory handles are tracked */
  388.     gestaltIPCSupport            = 7,                            /* IPC support is present */
  389.     gestaltSysDebuggerSupport    = 8                                /* system debugger support is present */
  390. };
  391.  
  392. enum {
  393.     gestaltOSTable                = 'ostt'
  394. };
  395.  
  396. enum {
  397.     gestaltPCXAttr                = 'pcxg',                        /* PC Exchange attributes */
  398.     gestaltPCXHas8and16BitFAT    = 0,                            /* PC Exchange supports both 8 and 16 bit FATs */
  399.     gestaltPCXHasProDOS            = 1                                /* PC Exchange supports ProDOS */
  400. };
  401.  
  402. enum {
  403.     gestaltLogicalPageSize        = 'pgsz'
  404. };
  405.  
  406. enum {
  407.     gestaltPopupAttr            = 'pop!',                        /* popup cdef attributes */
  408.     gestaltPopupPresent            = 0
  409. };
  410.  
  411. enum {
  412.     gestaltPowerMgrAttr            = 'powr',                        /* power manager attributes */
  413.     gestaltPMgrExists            = 0,
  414.     gestaltPMgrCPUIdle            = 1,
  415.     gestaltPMgrSCC                = 2,
  416.     gestaltPMgrSound            = 3,
  417.     gestaltPMgrDispatchExists    = 4
  418. };
  419.  
  420. /*
  421.  * PPC will return the combination of following bit fields.
  422.  * e.g. gestaltPPCSupportsRealTime +gestaltPPCSupportsIncoming + gestaltPPCSupportsOutGoing
  423.  * indicates PPC is cuurently is only supports real time delivery
  424.  * and both incoming and outgoing network sessions are allowed.
  425.  * By default local real time delivery is supported as long as PPCInit has been called.*/
  426. enum {
  427.     gestaltPPCToolboxAttr        = 'ppc ',                        /* PPC toolbox attributes */
  428.     gestaltPPCToolboxPresent    = 0x0000,                        /* PPC Toolbox is present  Requires PPCInit to be called */
  429.     gestaltPPCSupportsRealTime    = 0x1000,                        /* PPC Supports real-time delivery */
  430.     gestaltPPCSupportsIncoming    = 0x0001,                        /* PPC will deny incoming network requests */
  431.     gestaltPPCSupportsOutGoing    = 0x0002                        /* PPC will deny outgoing network requests */
  432. };
  433.  
  434. enum {
  435.     gestaltProcessorType        = 'proc',                        /* processor type */
  436.     gestalt68000                = 1,
  437.     gestalt68010                = 2,
  438.     gestalt68020                = 3,
  439.     gestalt68030                = 4,
  440.     gestalt68040                = 5
  441. };
  442.  
  443. enum {
  444.     gestaltParityAttr            = 'prty',                        /* parity attributes */
  445.     gestaltHasParityCapability    = 0,                            /* has ability to check parity */
  446.     gestaltParityEnabled        = 1                                /* parity checking enabled */
  447. };
  448.  
  449. enum {
  450.     gestaltQuickdrawVersion        = 'qd  ',                        /* quickdraw version */
  451.     gestaltOriginalQD            = 0x000,                        /* original 1-bit QD */
  452.     gestalt8BitQD                = 0x100,                        /* 8-bit color QD */
  453.     gestalt32BitQD                = 0x200,                        /* 32-bit color QD */
  454.     gestalt32BitQD11            = 0x210,                        /* 32-bit color QDv1.1 */
  455.     gestalt32BitQD12            = 0x220,                        /* 32-bit color QDv1.2 */
  456.     gestalt32BitQD13            = 0x230                            /* 32-bit color QDv1.3 */
  457. };
  458.  
  459. enum {
  460.     gestaltQuickdrawFeatures    = 'qdrw',                        /* quickdraw features */
  461.     gestaltHasColor                = 0,                            /* color quickdraw present */
  462.     gestaltHasDeepGWorlds        = 1,                            /* GWorlds can be deeper than 1-bit */
  463.     gestaltHasDirectPixMaps        = 2,                            /* PixMaps can be direct (16 or 32 bit) */
  464.     gestaltHasGrayishTextOr        = 3,                            /* supports text mode grayishTextOr */
  465.     gestaltSupportsMirroring    = 4                                /* Supports video mirroring via the Display Manager. */
  466. };
  467.  
  468. enum {
  469.     gestaltQuickTime            = 'qtim',
  470.     gestaltQuickTimeVersion        = 'qtim'
  471. };
  472.  
  473. enum {
  474.     gestaltQuickTimeFeatures     = 'qtrs',
  475.     gestaltPPCQuickTimeLibPresent = 0                            /* PowerPC QuickTime glue library is present */
  476. };
  477.  
  478. enum {
  479.     gestaltPhysicalRAMSize        = 'ram '
  480. };
  481.  
  482. enum {
  483.     gestaltRBVAddr                = 'rbv '
  484. };
  485.  
  486. enum {
  487.     gestaltROMSize                = 'rom '
  488. };
  489.  
  490. enum {
  491.     gestaltROMVersion            = 'romv'
  492. };
  493.  
  494. enum {
  495.     gestaltResourceMgrAttr        = 'rsrc',                        /* Resource Mgr attributes */
  496.     gestaltPartialRsrcs            = 0                                /* True if partial resources exist */
  497. };
  498.  
  499. enum {
  500.     gestaltRealtimeMgrAttr        = 'rtmr',                        /* Realtime manager attributes            */
  501.     gestaltRealtimeMgrPresent    = 0                                /* true if the Realtime manager is present     */
  502. };
  503.  
  504. enum {
  505.     gestaltSCCReadAddr            = 'sccr'
  506. };
  507.  
  508. enum {
  509.     gestaltSCCWriteAddr            = 'sccw'
  510. };
  511.  
  512. enum {
  513.     gestaltScrapMgrAttr            = 'scra',                        /* Scrap Manager attributes */
  514.     gestaltScrapMgrTranslationAware = 0                            /* True if scrap manager is translation aware */
  515. };
  516.  
  517. enum {
  518.     gestaltScriptMgrVersion        = 'scri'
  519. };
  520.  
  521. enum {
  522.     gestaltScriptCount            = 'scr#'
  523. };
  524.  
  525. enum {
  526.     gestaltSCSI                    = 'scsi',                        /* SCSI Manager attributes */
  527.     gestaltAsyncSCSI            = 0,                            /* Supports Asynchronous SCSI */
  528.     gestaltAsyncSCSIINROM        = 1,                            /* Async scsi is in ROM (available for booting) */
  529.     gestaltSCSISlotBoot            = 2                                /* ROM supports Slot-style PRAM for SCSI boots (PDM and later) */
  530. };
  531.  
  532. enum {
  533.     gestaltControlStripAttr        = 'sdev',                        /* Control Strip attributes */
  534.     gestaltControlStripExists    = 0,
  535.     gestaltControlStripVersionFixed = 1
  536. };
  537.  
  538. enum {
  539.     gestaltSerialAttr            = 'ser ',                        /* Serial attributes */
  540.     gestaltHasGPIaToDCDa        = 0,                            /* GPIa connected to DCDa*/
  541.     gestaltHasGPIaToRTxCa        = 1,                            /* GPIa connected to RTxCa clock input*/
  542.     gestaltHasGPIbToDCDb        = 2                                /* GPIb connected to DCDb */
  543. };
  544.  
  545. enum {
  546.     gestaltNuBusConnectors        = 'sltc'
  547. };
  548.  
  549. enum {
  550.     gestaltSlotAttr                = 'slot',                        /* slot attributes  */
  551.     gestaltSlotMgrExists        = 0,                            /* true is slot mgr exists  */
  552.     gestaltNuBusPresent            = 1,                            /* NuBus slots are present  */
  553.     gestaltSESlotPresent        = 2,                            /* SE PDS slot present  */
  554.     gestaltSE30SlotPresent        = 3,                            /* SE/30 slot present  */
  555.     gestaltPortableSlotPresent    = 4                                /* Portable’s slot present  */
  556. };
  557.  
  558. enum {
  559.     gestaltFirstSlotNumber        = 'slt1'
  560. };
  561.  
  562. enum {
  563.     gestaltSoundAttr            = 'snd ',                        /* sound attributes */
  564.     gestaltStereoCapability        = 0,                            /* sound hardware has stereo capability */
  565.     gestaltStereoMixing            = 1,                            /* stereo mixing on external speaker */
  566.     gestaltSoundIOMgrPresent    = 3,                            /* The Sound I/O Manager is present */
  567.     gestaltBuiltInSoundInput    = 4,                            /* built-in Sound Input hardware is present */
  568.     gestaltHasSoundInputDevice    = 5,                            /* Sound Input device available */
  569.     gestaltPlayAndRecord        = 6,                            /* built-in hardware can play and record simultaneously */
  570.     gestalt16BitSoundIO            = 7,                            /* sound hardware can play and record 16-bit samples */
  571.     gestaltStereoInput            = 8,                            /* sound hardware can record stereo */
  572.     gestaltLineLevelInput        = 9,                            /* sound input port requires line level */
  573. /* the following bits are not defined prior to Sound Mgr 3.0 */
  574.     gestaltSndPlayDoubleBuffer    = 10,                            /* SndPlayDoubleBuffer available, set by Sound Mgr 3.0 and later */
  575.     gestaltMultiChannels        = 11,                            /* multiple channel support, set by Sound Mgr 3.0 and later */
  576.     gestalt16BitAudioSupport    = 12                            /* 16 bit audio data supported, set by Sound Mgr 3.0 and later */
  577. };
  578.  
  579. enum {
  580.     gestaltStandardFileAttr        = 'stdf',                        /* Standard File attributes */
  581.     gestaltStandardFile58        = 0,                            /* True if selectors 5-8 (StandardPutFile-CustomGetFile) are supported */
  582.     gestaltStandardFileTranslationAware = 1,                    /* True if standard file is translation manager aware */
  583.     gestaltStandardFileHasColorIcons = 2                        /* True if standard file has 16x16 color icons */
  584. };
  585.  
  586. enum {
  587.     gestaltSysArchitecture        = 'sysa',                        /* Native System Architecture */
  588.     gestalt68k                    = 1,                            /* Motorola MC68k architecture */
  589.     gestaltPowerPC                = 2                                /* IBM PowerPC architecture */
  590. };
  591.  
  592. enum {
  593.     gestaltSystemVersion        = 'sysv'
  594. };
  595.  
  596. enum {
  597.     gestaltTSMgrVersion            = 'tsmv'
  598. };
  599.  
  600. enum {
  601.     gestaltTSMgrAttr            = 'tsma',                        /* Text Services Mgr attributes, if present */
  602.     gestaltTSMDisplayMgrAwareBit = 0                            /* TSM knows about display manager */
  603. };
  604.  
  605. enum {
  606.     gestaltTextEditVersion        = 'te  ',                        /* TextEdit version number */
  607.     gestaltTE1                    = 1,                            /* TextEdit in MacIIci ROM */
  608.     gestaltTE2                    = 2,                            /* TextEdit with 6.0.4 Script Systems on MacIIci (Script bug fixes for MacIIci) */
  609.     gestaltTE3                    = 3,                            /* TextEdit with 6.0.4 Script Systems all but MacIIci */
  610.     gestaltTE4                    = 4,                            /* TextEdit in System 7.0 */
  611.     gestaltTE5                    = 5                                /* TextWidthHook available in TextEdit */
  612. };
  613.  
  614. enum {
  615.     gestaltTEAttr                = 'teat',                        /* TextEdit attributes */
  616.     gestaltTEHasGetHiliteRgn    = 0                                /* TextEdit has TEGetHiliteRgn */
  617. };
  618.  
  619. enum {
  620.     gestaltTermMgrAttr            = 'term',                        /* terminal mgr attributes */
  621.     gestaltTermMgrPresent        = 0,
  622.     gestaltTermMgrErrorString    = 2
  623. };
  624.  
  625. enum {
  626.     gestaltTimeMgrVersion        = 'tmgr',                        /* time mgr version */
  627.     gestaltStandardTimeMgr        = 1,                            /* standard time mgr is present */
  628.     gestaltRevisedTimeMgr        = 2,                            /* revised time mgr is present */
  629.     gestaltExtendedTimeMgr        = 3                                /* extended time mgr is present */
  630. };
  631.  
  632. enum {
  633.     gestaltSpeechAttr            = 'ttsc',                        /* Speech Manager attributes */
  634.     gestaltSpeechMgrPresent        = 0,                            /* bit set indicates that Speech Manager exists */
  635.     gestaltSpeechHasPPCGlue        = 1                                /* bit set indicates that native PPC glue for Speech Manager API exists */
  636. };
  637.  
  638. enum {
  639.     gestaltToolboxTable            = 'tbtt'
  640. };
  641.  
  642. enum {
  643.     gestaltThreadMgrAttr        = 'thds',                        /* Thread Manager attributes */
  644.     gestaltThreadMgrPresent        = 0,                            /* bit true if Thread Mgr is present */
  645.     gestaltSpecificMatchSupport    = 1                                /* bit true if Thread Mgr supports exact match creation option */
  646. };
  647.  
  648. enum {
  649.     gestaltTVAttr                = 'tv  ',                        /* TV version                                        <EX16>     */
  650.     gestaltHasTVTuner            = 0,                            /* supports Philips FL1236F video tuner                <EX16>     */
  651.     gestaltHasSoundFader        = 1,                            /* supports Philips TEA6330 Sound Fader chip        <EX16>     */
  652.     gestaltHasHWClosedCaptioning = 2,                            /* supports Philips SAA5252 Closed Captioning        <EX16>     */
  653.     gestaltHasIRRemote            = 3,                            /* supports CyclopsII Infra Red Remote control        <EX16>     */
  654.     gestaltHasVidDecoderScaler    = 4,                            /* supports Philips SAA7194 Video Decoder/Scaler    <EX16>     */
  655.     gestaltHasStereoDecoder        = 5                                /* supports Sony SBX1637A-01 stereo decoder            <EX16>     */
  656. };
  657.  
  658. enum {
  659.     gestaltVersion                = 'vers'
  660. };
  661.  
  662. enum {
  663.     gestaltVIA1Addr                = 'via1'
  664. };
  665.  
  666. enum {
  667.     gestaltVIA2Addr                = 'via2'
  668. };
  669.  
  670. enum {
  671.     gestaltVMAttr                = 'vm  ',                        /* virtual memory attributes */
  672.     gestaltVMPresent            = 0                                /* true if virtual memory is present */
  673. };
  674.  
  675. enum {
  676.     gestaltTranslationAttr        = 'xlat',                        /* Translation Manager attributes */
  677.     gestaltTranslationMgrExists    = 0,                            /* True if translation manager exists */
  678.     gestaltTranslationMgrHintOrder = 1,                            /* True if hint order reversal in effect */
  679.     gestaltTranslationPPCAvail    = 2,
  680.     gestaltTranslationGetPathAPIAvail = 3
  681. };
  682.  
  683. enum {
  684.     gestaltExtToolboxTable        = 'xttt'
  685. };
  686.  
  687. typedef pascal OSErr (*SelectorFunctionProcPtr)(OSType selector, long *response);
  688.  
  689. #if GENERATINGCFM
  690. typedef UniversalProcPtr SelectorFunctionUPP;
  691. #else
  692. typedef SelectorFunctionProcPtr SelectorFunctionUPP;
  693. #endif
  694.  
  695. enum {
  696.     uppSelectorFunctionProcInfo = kPascalStackBased
  697.          | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  698.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(OSType)))
  699.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long*)))
  700. };
  701.  
  702. #if GENERATINGCFM
  703. #define NewSelectorFunctionProc(userRoutine)        \
  704.         (SelectorFunctionUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppSelectorFunctionProcInfo, GetCurrentArchitecture())
  705. #else
  706. #define NewSelectorFunctionProc(userRoutine)        \
  707.         ((SelectorFunctionUPP) (userRoutine))
  708. #endif
  709.  
  710. #if GENERATINGCFM
  711. #define CallSelectorFunctionProc(userRoutine, selector, response)        \
  712.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppSelectorFunctionProcInfo, (selector), (response))
  713. #else
  714. #define CallSelectorFunctionProc(userRoutine, selector, response)        \
  715.         (*(userRoutine))((selector), (response))
  716. #endif
  717.  
  718. #if SystemSevenOrLater
  719.  
  720. #if !GENERATINGCFM
  721. #pragma parameter __D0 Gestalt(__D0, __A1)
  722. #endif
  723. extern pascal OSErr Gestalt(OSType selector, long *response)
  724.  TWOWORDINLINE(0xA1AD, 0x2288);
  725.  
  726. #if !GENERATINGCFM
  727. #pragma parameter __D0 NewGestalt(__D0, __A0)
  728. #endif
  729. extern pascal OSErr NewGestalt(OSType selector, SelectorFunctionUPP gestaltFunction)
  730.  ONEWORDINLINE(0xA3AD);
  731.  
  732. #if !GENERATINGCFM
  733. #pragma parameter __D0 ReplaceGestalt(__D0, __A0, __A1)
  734. #endif
  735. extern pascal OSErr ReplaceGestalt(OSType selector, SelectorFunctionUPP gestaltFunction, SelectorFunctionUPP *oldGestaltFunction)
  736.  FOURWORDINLINE(0x2F09, 0xA5AD, 0x225F, 0x2288);
  737. #else
  738. extern pascal OSErr Gestalt(OSType selector, long *response);
  739. extern pascal OSErr NewGestalt(OSType selector, SelectorFunctionUPP gestaltFunction);
  740. extern pascal OSErr ReplaceGestalt(OSType selector, SelectorFunctionUPP gestaltFunction, SelectorFunctionUPP *oldGestaltFunction);
  741. #endif
  742. #if SystemSevenFiveOrLater
  743. /* These functions are built into System 7.5, but not on earlier systems */
  744. extern pascal OSErr NewGestaltValue(OSType selector, long newValue)
  745.  THREEWORDINLINE(0x303C, 0x0401, 0xABF1);
  746. extern pascal OSErr ReplaceGestaltValue(OSType selector, long replacementValue)
  747.  THREEWORDINLINE(0x303C, 0x0402, 0xABF1);
  748. extern pascal OSErr DeleteGestaltValue(OSType selector)
  749.  THREEWORDINLINE(0x303C, 0x0203, 0xABF1);
  750. extern pascal OSErr SetGestaltValue(OSType selector, long newValue)
  751.  THREEWORDINLINE(0x303C, 0x0404, 0xABF1);
  752. #endif
  753.  
  754. #ifdef __CFM68K__
  755. #pragma lib_export off
  756. #endif
  757.  
  758. #if GENERATINGPOWERPC
  759. #pragma options align=reset
  760. #endif
  761.  
  762. #ifdef __cplusplus
  763. }
  764. #endif
  765.  
  766. #endif /* __GESTALT__ */
  767.